package com.growthserver.mapper;

import com.growthserver.entity.*;
import com.growthserver.param.TTaskComboParam;
import com.growthserver.param.TaskInfoParam;
import com.growthserver.param.TaskInfoUserParam;
import com.growthserver.vo.TTaskComboVo;
import com.growthserver.vo.TaskInfoVo;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

public interface TaskCenterMapper {

    /**
     * 创建任务
     */
    void createTaskCenter(TaskInfoVo taskInfoVo);
    /**
     * 生成规则
     */
    void batchInsert(List<TTaskRuleEntity> list);

    /**
     * 生成规则
     * @param tTaskRuleEntity
     */
    void insertRuleTask(TTaskRuleEntity tTaskRuleEntity);

    /**
     * 修改任务
     * @param tTaskInfoEntity
     */
    void updateTask(TTaskInfoEntity tTaskInfoEntity);

    /**
     * 修改任务规则
     * @param tTaskRuleEntity
     */
     void updateTaskRule(TTaskRuleEntity tTaskRuleEntity);

    /**
     * 删除
     * @param ids
     */
     void deleteTaskRule(List<String> ids);

     void upDownTask(@Param("isEnable") String isEnable,@Param("taskId") String taskId);

    /**
     * 查询规则类型
     * @param taskInfoVo
     * @return
     */
    List<String> selectByUserTypeAndType(TaskInfoVo taskInfoVo);
    String selectByBudgetNum(@Param("budgetRequestNum") String budgetRequestNum);

    List<TTaskInfoEntity> taskDisplay(TaskInfoParam taskInfoParam);
    List<String> selectRuleDetailByTaskId(@Param("taskId") String taskId);
    List<TTaskRuleDetailEntity> taskRuleData(@Param("taskType") String taskType,@Param("memberLevel") String memberLevel);

    /**
     * 根据类型获取 ,规则
     * @param taskInfoParam
     * @return
     */
    List<TTaskRuleDetailEntity> selectByTypeTaskRule(TaskInfoParam taskInfoParam);

    List<TaskInfoUserParam> taskDisplayByUser(String taskInfoParam);
//    TaskNumUserParam taskDisplayByUserNum(String userId);

     List<TTaskRuleEntity> selectByTaskId(@Param("taskId") String taskId);

     void deleteTask(@Param("taskId") String taskId);

    /**
     * 创建社区任务件数
     * @param tTaskComboVo
     */
    void createTaskNum(TTaskComboVo tTaskComboVo);
    String selectTaskComboIsExist();

    /**
     * 编辑社区任务件数
     * @param tTaskComboEntity
     */
    void updateTaskNum(TTaskComboEntity tTaskComboEntity);

    /**
     * 社区任务上下架
     * @param isEnable
     * @param taskId
     */
    void upDownTaskNum(@Param("isEnable") String isEnable,@Param("taskId") String taskId);

    /**
     *
     * @param tTaskComboParam
     */
    List<TTaskComboEntity> taskNumDisplay(TTaskComboParam tTaskComboParam);

    /**
     * 删除社区任务
     * @param taskId
     */
    void deleteTaskNum(@Param("taskId") String taskId);

    /**
     *
     */
    List<String> getUserMemberInfo();

    /**
     * 社区任务日志记录表
     */
    void taskComboRecord(TTaskComboDoRecordEntity tTaskComboDoRecordEntity);

    void updateTaskComboRecord(@Param("taskId")String taskId ,@Param("taskType")String taskType);

    /**
     * 查询类型对应的社区任务
     * @param actionType
     * @return
     */
    List<HashMap<String,String>> selectTaskComboByType(@Param("actionType") String actionType);

    /**
     *
     * @param
     * @return
     */
    String selectByTaskIdAndTaskType(@Param("taskId")String taskId,@Param("taskType") String taskType,@Param("userId")String userId);

}
